package parts3.lesson36;

/**
 * 方法使用synchronized关键字
 */
public class MyThread2 implements Runnable {
    private int ticket = 10;

    @Override
    public void run() {
        for (int x = 0; x < 20; x++) {

            this.sale();
        }
    }

    public synchronized void sale() {
        if (this.ticket > 0) {
            /**
             * 在这里给this对象加锁
             */
            try {
                /**
                 * 模拟网络延迟1秒，就可能出现同一张票多个人同时卖出了
                 * 也有可能多卖出了一张票，变成了0
                 */
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName() + "卖票，ticket=" + this.ticket);

        }
        this.ticket--;
    }
}
